<?php

/**
* 
*/
class Controller
{

  /**
   * Array contenant les urls des fichiers de style à ajouter à la page
   */
  protected $styles;

  /**
   * Array contenant les urls des ifichiers de script à ajouter à la page
   * @var [type]
   */
  protected $scripts;

  /**
   * Titre de la page en cours
   * @var string
   */
  protected $title = "";

  /**
   * Constructeur du controlleur
   * Instantiation des attributs
   */
  function __construct()
  {
    $this->styles = array();
    $this->scripts = array();
  }

  /**
   * Action par défaut des controleur
   * @return [type] [description]
   */
  function indexAction()
  {
    echo "Controlleur par défaut. Rien à afficher.";
  }

  /**
   * Retourne true is la request est une requete ajax
   * @return boolean [description]
   */
  function isAjaxRequest()
  {
    if(!empty($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest')
      return true;
    else
      return false;
  }

  /**
   * Retourne l'url de reference si elle existe,
   * Retour null sinon 
   */
  function previousUrl() {
    // $pageURL = 'http';
    if (isset($_SERVER['HTTP_REFERER'])) {
      return $_SERVER['HTTP_REFERER'];
    }
    else
      return null;
  }

  /**
   * Retourne l'url courante
   */
  function getCurrentUrl() {
    return $_SERVER["SERVER_NAME"].$_SERVER["REQUEST_URI"];
  }

  /** 
   * Méthode permettant de modifier les parametre d'une url
   */
  function getUrlWithParams($url, $newParams = array()) {
    $parsedUrl = parse_url($url);

    $queryParts = explode('&', $parsedUrl['query']); 
    
    $params = array(); 
    foreach ($queryParts as $param) { 
        $item = explode('=', $param);
        if(isset($item[1]))
          $params[$item[0]] = $item[1]; 
    }

    $params = array_merge($params, $newParams);
    
    $query = "";
    foreach ($params as $key => $value) {
      $query .= "$key=$value&amp;";
    }

    return substr($parsedUrl['path'] . "?" . $query, 0, -5); 
  }
}
?>